var webpack = require('webpack');
var path = require('path');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin');

module.exports = {
    //页面入口文件配置
    entry: {
        index1: './public/js/index1',
        //支持数组形式，将加载数组中的所有模块，但以最后一个模块作为输出
        index2: ['./public/js/module1', './public/js/index2.js']
    },
    //入口文件输出配置
    output: {
        path: 'dist/',
        chunkFilename: "public/js/[name]-bundle-[hash:10].js",
        filename: "public/js/[name]-bundle-[hash:10].js",
        publicPath: "/webpack/dist/"
    },
    module: {
        //加载器配置 "-loader"其实是可以省略不写的，多个loader之间用“!”连接起来。
        loaders: [{
            //.css 文件使用 style-loader 和 css-loader 来处理
            test: /\.css$/,
            loader: 'style!css'
        }, {
            //.less 文件使用 style-loader、css-loader 和 less-loader 来编译处理
            test: /\.less$/,
            // loader: 'style!css!less?sourceMap'
            loader:  ExtractTextPlugin.extract('style', 'css!less') // 如需打包独立的css文件请释放注释
        }, {
            //.js 文件使用 jsx-loader 来编译处理
            test: /\.js$/,
            loader: 'jsx?harmony'
        }, {
            //图片文件使用 url-loader 来处理，小于8kb的直接转为base64
            test: /\.(png|jpg|ico)$/,
            loader: 'url?limit=8192&name=public/img/[name]-[hash:10].[ext]'
        }, {
            test: /\.html$/,
            loader: "html"
        }]
    },
    //其它解决方案配置
    resolve: {
        //查找module的话从这里开始查找
        // root: 'D:/_jobs/_projects/w404/webpack', //绝对路径
        //自动扩展文件后缀名，意味着我们require模块可以省略不写后缀名
        extensions: ['', '.css', '.js', '.json', '.less'],
        //模块别名定义，方便后续直接引用别名，无须多写长长的地址
        alias: {
            AppStore: 'js/stores/AppStores.js',
            ActionType: 'js/actions/ActionType.js',
            AppAction: 'js/actions/AppAction.js'
        }
    },
    //插件项
    plugins: [
        new CleanWebpackPlugin(['dist'], {
            verbose: true,
            dry: false
        }),
        new ExtractTextPlugin('public/css/[name].css'), // 如需打包独立的css文件请释放注释
        new HtmlWebpackPlugin({ //根据模板插入css/js等生成最终HTML
            chunks: ['index1'],
            favicon: './public/favicon.ico', //favicon路径
            filename: 'index1.html', //生成的html存放路径，相对于 path
            template: 'index1.html', //html模板路径
            inject: true, //允许插件修改哪些内容，包括head与body
            hash: true, //为静态资源生成hash值
            minify: { //压缩HTML文件
                removeComments: true, //移除HTML中的注释
                collapseWhitespace: false //删除空白符与换行符
            }
        }),
        new HtmlWebpackPlugin({ //根据模板插入css/js等生成最终HTML
            chunks: ['index2'],
            favicon: './public/favicon.ico', //favicon路径
            filename: './view/index2.html', //生成的html存放路径，相对于 path
            template: './view/index2.html', //html模板路径
            inject: true, //允许插件修改哪些内容，包括head与body
            hash: true, //为静态资源生成hash值
            minify: { //压缩HTML文件
                removeComments: true, //移除HTML中的注释
                collapseWhitespace: false //删除空白符与换行符
            }
        })
    ]
};